<html>
    <head>
        <title>创建一个简单的插件</title>
    </head>
    <body>
        <script>
            /*
                        三、创建一个简单的插件

                                在解决方案中创建一个简单的 "类库项目"：

                                你可以在模块中添加需要使用的ABP包。至少，你应该将Volo.Abp.Core包添加到项目中，在要安装包的.csproj文件夹中执行以下命令：

                                                abp add-package Volo.Abp.Core

                                每个模块都必须声明一个派生自AbpModule的类。这里，一个简单的模块类，用于解析服务并在应用程序启动时对其进行初始化：

                                                using Microsoft.Extensions.DependencyInjection;
                                                using Volo.Abp;
                                                using Volo.Abp.Modularity;

                                                namespace MyPlugIn
                                                {
                                                    public class MyPlungInModule : AbpModule
                                                    {
                                                        public override void OnApplicationInitialization(ApplicationInitializationContext context)
                                                        {
                                                            var myService = context.ServiceProvider
                                                                .GetRequiredService<MyService>();
                                                            
                                                            myService.Initialize();
                                                        }
                                                    }
                                                }

                                MyService可以是注册到依赖注入系统的任何类，如下所示：

                                                using Microsoft.Extensions.Logging;
                                                using Volo.Abp.DependencyInjection;

                                                namespace MyPlugIn
                                                {
                                                    public class MyService : ITransientDependency
                                                    {
                                                        private readonly ILogger<MyService> _logger;

                                                        public MyService(ILogger<MyService> logger)
                                                        {
                                                            _logger = logger;
                                                        }

                                                        public void Initialize()
                                                        {
                                                            _logger.LogInformation("MyService has been initialized");
                                                        }
                                                    }
                                                }

                                构建项目，打开构建文件夹，找到MyPlugIn.dll：

                                将MyPlugIn.dll复制到插件文件夹中（D:\Temp\MyPlugIns对于本例）。

                                如果你已经像上面描述的那样配置了主应用程序（请参阅基本用法部分），你应该会在应用程序启动时看到MyService has been initialized日志。
                    */
        </script>
    </body>
</html>